package org.dandsoft.blackbox.mapreduce.client.operation;


/**
 * @author Vilyuzhanin Denis (Fin)
 */
public interface OperationContext {

    /**
     * @param key
     * @param value
     * @throws OperationException
     * @throws WrongEmitOperationException
     */
    void emit(Object key, Object value) throws OperationException;

    /**
     * @param value
     * @throws OperationException
     * @throws WrongEmitOperationException
     */
    void emit(Object value) throws OperationException;

    /**
     * Получить фазу выполнения
     *
     * @return
     */
    PhaseType getPhaseType();

    /**
     * Возвращает номер итерации віполнения задачи. Необходим чтобы операции могли ориентироваться
     * во времени.
     * @return
     */
    long getIterationNumber();
}
